package com.itheima.leetcode.od.c.dynamicprogramming;

import java.util.Arrays;
import java.util.Scanner;

/**
 * <h3>高效货运</h3>
 */
public class EfficientFreightTransportation {
    // 输入输出处理
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int wa = sc.nextInt();
        int wb = sc.nextInt();
        int wt = sc.nextInt();
        int pa = sc.nextInt();
        int pb = sc.nextInt();

        // 装入货车的A货物数量至少1件，至多(wt - wb) / wa件
        int minX = 1;
        int maxX = (wt - wb) / wa;

        // 记录最大利润
        int ans = 0;

        // 枚举A货物的可能数量
        for (int x = minX; x <= maxX; x++) {
            // B货物可能的总重量
            int remain = wt - wa * x;

            if (remain % wb == 0) {
                // B货物的数量
                int y = remain / wb;

                // 计算利润，保留最大利润
                ans = Math.max(ans, pa * x + pb * y);
            }
        }

        System.out.println(ans);
    }

    /**
     * 完全背包
     *
     * @param bag 背包承重
     * @param n 物品种数
     * @param w 物品的重量数组
     * @param p 物品的价值数组
     * @return 装满背包的最大价值
     */
    public static int getResult(int bag, int n, int[] w, int[] p) {
        // dp[i]表示装满承重为 i 的背包的最大价值
        int[] dp = new int[bag + 1];

        // 装满背包的背包问题，初始化时需要将除了dp[0]外的dp元素值设为负无穷
        Arrays.fill(dp, Integer.MIN_VALUE);
        dp[0] = 0;

        for (int i = 0; i < n; i++) { // 遍历物品
            for (int j = w[i]; j <= bag; j++) { // 遍历背包承重，完全背包这里要正序遍历
                dp[j] = Math.max(dp[j], dp[j - w[i]] + p[i]);
            }
        }

        // 返回装满承重为bag的背包的最大价值
        return dp[bag];
    }
}